package com.gin.no_gay_alliance.manager.history;

import androidx.annotation.NonNull;

import com.gin.no_gay_alliance.utils.DataStoreUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 搜索历史管理器
 *
 * @author : ginstone
 * @version : v1.0.0
 * @since : 2023/9/14 15:16
 **/
public class SearchHistoryManager {
    /**
     * 搜索版面历史key
     */
    public static final String DATA_STORE_KEY_SEARCH_FORUM_HISTORY = "SEARCH_FORUM_HISTORY";
    /**
     * 搜索主题历史
     */
    public static final String DATA_STORE_KEY_SEARCH_TOPIC_HISTORY = "SEARCH_TOPIC_HISTORY";

    /**
     * 添加一个搜索历史到指定列表
     *
     * @param key     key
     * @param keyword 关键字
     */
    public static void addHistory(@NonNull String key, @NonNull String keyword) {
        List<String> history = deleteHistory(key, keyword);
        history.add(0, keyword);
        setHistory(key, history);
    }

    /**
     * 清空一个搜索历史
     *
     * @param key key
     */
    public static void clearHistory(@NonNull String key) {
        setHistory(key, new ArrayList<>());
    }

    /**
     * 从指定列表中删除一个搜索历史
     *
     * @param key     key
     * @param keyword 关键字
     * @return 删除完毕后的列表
     */
    public static List<String> deleteHistory(@NonNull String key, @NonNull String keyword) {
        List<String> history = getHistory(key);
        history.removeIf(keyword::equals);
        return history;
    }

    /**
     * 获取一个搜索历史列表
     *
     * @param key key
     * @return 搜索历史列表
     */
    public static List<String> getHistory(@NonNull String key) {
        return DataStoreUtils.getInstance().getList(key);
    }

    /**
     * 设置一个搜索历史列表
     *
     * @param key  key
     * @param list 列表
     */
    public static void setHistory(@NonNull String key, @NonNull List<String> list) {
        DataStoreUtils.getInstance().setList(key, list);
    }
}
